package com.zsrt.day20170420.companyforlist.impl;

import java.util.ArrayList;
import java.util.List;

import com.zsrt.day20170420.companyforlist.dao.Programmer;
import com.zsrt.day20170420.companyforlist.dao.ProgrammerDao;

/**
*@author jzh
*@创建时间 2017年4月19日下午3:35:42
*类说明：
*/
public class ProgrammerDaoImpl implements ProgrammerDao {
	
	/**
	 * 根据名字判断程序员是否存在
	 * @param programmer	原程序员数组
	 * @param name          给定的名字	
	 * @return              存在，返回下标，不存在，返回-1
	 */
	@Override
	public int isExsit(ArrayList programmers, String name) {
		for(int index=0;index<programmers.size();index++){
			
			Programmer programmer=(Programmer)programmers.get(index);
			String mingZi=programmer.getName();
			
			//String mingZi=programmers.get(index).getName();
			
			if(mingZi.equals(name)){
				return index;
			}	
		}
		return -1;
	}
	
	/**
	 * 增加一个程序员
	 * @param programmers	原程序员数组
	 * @param programmer	要增加的程序员对象
	 * @return              增加后的程序员数组
	 */
	@Override
	public ArrayList addProgrammer(ArrayList programmers, Programmer programmer) {
		String name=programmer.getName();
		int i=isExsit(programmers,name);
		if(i<0){
			programmers.add(programmer);
		}else{
			System.out.println("该程序员已存在");
		}
		return programmers;
	}
	/**
	 * 根据名字开除一个程序员
	 * @param programmers	原程序员数组
	 * @param name          要删除程序员的名字
	 * @return              返回删除后的程序员数组
	 */
	@Override
	public ArrayList deleteProgrammer(ArrayList programmers, Programmer programmer) {
		String name = programmer.getName();
        int i=isExsit(programmers,name);
		if(i>=0){
			programmers.remove(programmer);
			System.out.println("删除成功");
		}else{
			System.out.println("该程序员不存在");
		}
		return programmers;
	}
	/**
	 * 开除所有的男的程序员
	 * @param programmers	原程序员数组
	 * @return              返回删除后的程序员数组
	 */
	@Override
	public ArrayList deleteMaleProgrammers(ArrayList programmers) {
		for(int index=0;index<programmers.size();index++){
			Programmer programmer=(Programmer)programmers.get(index);
			String sex = programmer.getSex();
			if(sex.equals("男")){
				programmers.remove(index);
			}
		}
		return programmers;
	}
	/**
	 * 把所有的女程序员的工资增加1000块
	 * @param programmers	原程序员数组
	 * @return              返回增加后的程序员数组
	 */
	@Override
	public ArrayList addSalaryForFemaleProgrammers(ArrayList programmers) {
		for(int index=0;index<programmers.size();index++){
			Programmer programmer=(Programmer)programmers.get(index);
			String sex = programmer.getSex();
			if(sex.equals("女")){
				int salary=programmer.getSalary()+1000;
				programmer.setSalary(salary);
				programmers.set(index,programmer);
			}
		}
		return programmers;
	}
	/**
	 * 查询所有工资在10000以上的程序
	 * @param programmers	原程序员数组
	 * @return              返回工资在10000以上的的程序员数组
	 */
	@Override
	public ArrayList findSalaryAbove(ArrayList programmers) {
		ArrayList targetList=new ArrayList();
		for(int index=0;index<programmers.size();index++){
			Programmer programmer=(Programmer)programmers.get(index);
			int salary=programmer.getSalary();
			if(salary>10000){
				Programmer targetProgrammer=(Programmer)programmers.get(index);
				targetList.add(targetProgrammer);
			}
		}
		return targetList;
	}
	/**
	 * 查询所有工资在10000以上的中级程序员
	 * @param programmers			原程序员数组
	 * @return                      返回工资在10000以上的中级程序员数组
	 */
	@Override
	public ArrayList findSalaryAboveAndLevelAbove(ArrayList programmers) {
		ArrayList salaryAbove = findSalaryAbove(programmers);
		for(int index=0;index<salaryAbove.size();index++){
			Programmer programmer=(Programmer)programmers.get(index);
			String level=programmer.getLevel();
			if(!level.equals("中级程序员")){
				programmers.remove(index);
			}
		}
		return programmers;
	}

}
